
/*
Nombre:		siguienteDiaHabilAtras
Descripcion:	Funcion que sirve para ver si un bloque debe ser liberado
Fecha:		2006.01.26
*/

create  FUNCTION  dbo.siguienteDiaHabilAtras (@fecha datetime)  
RETURNS datetime AS  
BEGIN 
	
	DECLARE @DIAHABIL DATETIME, @DTMP INT, @NEXT BIT

	declare DIAS_HABILES CURSOR FOR
		SELECT 	 * 
		FROM 	 DIASINHABILES 
		WHERE 	 FechaInhabil<@fecha 
		order by fechainhabil DESC

	OPEN DIAS_HABILES

	FETCH NEXT FROM DIAS_HABILES INTO @DIAHABIL
	SET @NEXT = 1
	WHILE @NEXT = 1
	BEGIN
		SET @fecha = @fecha - 1
		SET @DTMP = DATEPART( dw, @fecha )
		IF @DTMP < 6
		begin
			if @@FETCH_STATUS = 0 
			begin
				if year(@fecha) != year(@DIAHABIL) or month(@fecha) != month(@DIAHABIL) or day(@fecha) != day(@DIAHABIL) 
				begin
				   break
				end
				FETCH NEXT FROM DIAS_HABILES INTO @DIAHABIL
			end else begin
				break
			end
		END
	END

	CLOSE DIAS_HABILES
	DEALLOCATE DIAS_HABILES

	return @fecha
END
go